perm filename FFT.TIM[TIM,LSP]1 blob
sn#657803 filedate 1982-05-07 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 SAIL FFT done 10 times
C00003 00003 Barrow's FFT times
C00005 00004 InterLisp-10
C00013 ENDMK
C⊗;
;;; SAIL FFT done 10 times
.r plisp
T
(fasload fft)
42650.
(timit)
Cpu Time = 4.392
Elapsed Time = 8.15
Wholine Time = 8.1333333
GC time = 1.463
Load Average Before = 0.32191658
Load Average After = 0.361239552
NIL
(timit)
Cpu Time = 4.391
Elapsed Time = 8.1333333
Wholine Time = 8.1333333
GC time = 1.458
Load Average Before = 0.356279135
Load Average After = 0.39353633
NIL
↑C
↑C
;;; Barrow's FFT times
---------------------------------------------------------------
| Machine & | Interpreted | Compiled | Interpreted |
| Language | Secs Ratio | SecS Ratio | /Compiled |
---------------------------------------------------------------
| | | | |
| 2060 | 28.7 1.0 | 0.532 1.0 | 53.9 |
| Maclisp | | | |
| | | | |
| LispM | 97.2 3.39 | 3.52 6.62 | 27.6 |
| Zetalisp | | | |
| | | | |
| Vax | 135.5 4.72 | 66.5 125.0 | 2.04 |
| Franzlisp | | | |
| | | | |
| 2060 | 37.3 1.30 | 12.6 23.68 | 2.96 |
| Interlisp | | | |
| | | | |
| Dolphin | 431.7 15.0 | 149.1 280.3 | 1.54 |
| Interlisp | | | |
| | | | |
---------------------------------------------------------------
-------
;;; InterLisp-10
∂07-May-82 1956 MASINTER at PARC-MAXC Interlisp-10 FFT timings
Date: 7 MAY 1982 1956-PDT
From: MASINTER at PARC-MAXC
Subject: Interlisp-10 FFT timings
To: RPG at SU-AI
cc: masinter
Here are the Interlisp-10 times I got using a slight modification
of Barrow's original translation:
Speed: 1.715 CPU seconds Space: 1 large integers
13.033 real saconds 1331_ floating numbers
9.975 gc time 39 page faults
load av= .679
With MINFS(20000 FLOATP)
Speed: 1.691 CPU seconds Space: 1 large integers
4.190 real @MKG←]⊃f@@@@@@@@@@@@@@@Dffbp↓MY←CQS]NA9k[EKIb~∀@@@@@@@@@bTrb\AOFAQS[J@@@@@@@@@@@@@@@@@@@@@HpAaC≥JAMCUYif~)YP∨π"βπYuα↓↓↓↓s9IQhP4*#/∪∃β'~βS#∃ε≠?∪∃rα≠'K≥!1β¬α∪≠πO"β≠3?∂#';≥∩βCπ∂↑∨∃HhP4)"4J2⊗∞∀*εR⊗"↓↓↓]lkπe5C⊃↓EeS)AiQ*⊃↓r6
~&:R-⊃z~⊗e!99Mβ1YA↓α↓4(hQ↓↓↓αβCK↔6K?WMε#πS∃R↓ MAlkπI5C⊃↓AAS→AiQα⊃↓r6
~&*R-⊃z~⊗e!99IHh(4(hQ"BJ-"Rf∞|jBJ&u!α
⊗e"∞.6~H4(∀RBJBε
α~⊗e"∞.6~αm"6~J>MαQα~⊗e"6ε∞∀zM$4PH%↓"α↓"6>4!↓"F,zR∃α,bQ$4PH$%↓αBFV>$)α~2,bQ%$hP$%↓α↓↓"6⎇2⊃↓"
*>R∃¬~⊗R¬Hh($$J↓↓"F,zR∃α4bN⊗R
i$4(hQ"JB
Eα~,bR6ε≥∩6M↓D22⊗2"α~2N-"¬%$hQ"$X9D
∀W$∧-∀→H∧≤\Z ∀d*↓Q hR
U%¬)z¬~∧iHTe" X∀≥∀t2D
e⊂hP∀∧ααBhiD|~d¬¬4t¬∧⎇∧Yj"αEh_rαD~ E-~¬ D`8h⊂*!Q@∧DDBDP⊂⊂
b"1 N])
λ
(PUTP@%=!&A
1')α↓≠βπ∀y↓!"λα1αYHh($$JB∞2>≤*I↓"Mα2VMαB2>
∧ $4(HH$%↓α↓↓↓↓αBε∩⊃
α0∩J⊃Q HHα"*λi∪p5∧
J**%⊃"J#!%⊂εgk⊃⊂∀ ⊃UOPE ELT)
(QUOTA FLEH (R$~∀Q≠=)@QE+↔)
↓')α$~∀@@@@@QE+∨)
↓
→'QαRR~(Q∩⊗≤bεJ∃Rα∩>:$~6BdhQ↓↓"4J2⊗6
↓↓"~
And then FFTI
(FILECREATED " 7-May-82 19:50:31" <MASINTER>FFTI.LSP.5 3390
previous date: " 7-May-82 19:45:09" <MASINTER>FFTI.LSP.4)
(PRETTYCOMPRINT FFTICOMS)
(RPAQQ FFTICOMS ((FNS * FFTIFNS)
(LOCALVARS . T)))
(RPAQQ FFTIFNS (FFT TRY))
(DEFINEQ
(FFT
[LAMBDA (AREAL AIMAG) (* edited:
"30-Mar-82 00:25")
(* Fast Fourier
Transform AREAL = real
part, AIMAG = imaginary
part)
(PROG (AR AI PI I J K M N LE LE1 IP NV2 NM1 UR UI WR WI TR TI)
(SETQ AR AREAL) (* Initialize)
(SETQ AI AIMAG)
(SETQ PI 3.141593)
(SETQ N (ARRAYSIZE AR))
(SETQ NV2 (IQUOTIENT N 2))
(SETQ NM1 (SUB1 N))
(SETQ M 0) (* Compute M = log
(N))
(SETQ I 1)
L1 (COND
((ILESSP I N)
(SETQ M (ADD1 M))
(SETQ I (IPLUS I I))
(GO L1)))
[COND
((NOT (IEQP N (EXPT 2 M)))
(PRIN1 "Error ... array size not a power of two.")
(HELP)
(RETURN (TERPRI]
(SETQ J 1) (* Interchange elements)
(SETQ I 1) (* in bit-reversed
order)
L3 (COND
((ILESSP I J)
(SETQ TR (FLELT AR J))
(SETQ TI (FLELT AI J))
(FLSETA AR J (FLELT AR I))
(FLSETA AI J (FLELT AI I))
(FLSETA AR I TR)
(FLSETA AI I TI)))
(SETQ K NV2)
L6 (COND
((ILESSP K J)
(SETQ J (IDIFFERENCE J K))
(SETQ K (IQUOTIENT K 2))
(GO L6)))
(SETQ J (IPLUS J K))
(SETQ I (ADD1 I))
(COND
((ILESSP I N)
(GO L3)))
(for L from 1 to M
do (* Loop thru stages)
(SETQ LE (EXPT 2 L))
(SETQ LE1 (IQUOTIENT LE 2))
(SETQ UR 1.0)
(SETQ UI 0.0)
[SETQ WR (COS (FQUOTIENT PI (FLOAT LE1]
[SETQ WI (SIN (FQUOTIENT PI (FLOAT LE1]
(for J from 1 to LE1
do (* Loop thru
butterflies)
(for I←J by (IPLUS I LE) while (ILEQ I N)
do (* Do a butterfly)
(SETQ IP (IPLUS I LE1))
(SETQ TR (FDIFFERENCE (FTIMES (FLELT AR IP)
UR)
(FTIMES (FLELT AI IP)
UI)))
(SETQ TI (FPLUS (FTIMES (FLELT AR IP)
UI)
(FTIMES (FLELT AI IP)
UR)))
(FLSETA AR IP (FDIFFERENCE (FLELT AR I)
TR))
(FLSETA AI IP (FDIFFERENCE (FLELT AI I)
TI))
(FLSETA AR I (FPLUS (FLELT AR I)
TR))
(FLSETA AI I (FPLUS (FLELT AI I)
TI)))
(SETQ TR (FDIFFERENCE (FTIMES UR WR)
(FTIMES UI WI)))
(SETQ TI (FPLUS (FTIMES UR WI)
(FTIMES UI WR)))
(SETQ UR TR)
(SETQ UI TI)))
(RETURN T])
(TRY
[LAMBDA (SIZE) (* edited:
"30-Mar-82 00:26")
(COND
((NULL SIZE)
(SETQ SIZE 1024)))
(SETQ RE (ARRAY SIZE (QUOTE FLOATP)))
(SETQ IM (ARRAY SIZE (QUOTE FLOATP)))
(for I from 1 to SIZE do (FLSETA RE I (FLOAT 0))
(FLSETA IM I (FLOAT 0)))
(TIME (FFT RE IM)
1])
)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(LOCALVARS . T)
)
(DECLARE: DONTCOPY
(FILEMAP (NIL (248 3309 (FFT 260 . 2954) (TRY 2958 . 3306)))))
STOP